COO Communities

The primary geographic unit of this assessment is the census tract. As is the case with many communities, the census geographies do not coincide exactly with the formal geographic boundary of the study’s three sites, and should be considered as spatial approximations of these communities.

Listed below are the geographic identifiers of the census tracts that approximate each site.

Rainier Valley
(2009)
Rainier Valley
(2015)
White Center
(2009)
White Center
(2015)
SeaTac/Tukwila
(2009)
SeaTac/Tukwila
(2015)
53033010000 53033010001 53033026900 53033026600 53033026100 53033026200
53033010300 53033010300 53033026500 53033026700 53033026200 53033027300
53033010400 53033010401 53033026600 53033026500 53033026300 53033028000
53033011000 53033011001 53033026700 53033026801 53033026400 53033028100
53033011101 53033011002 53033026801 53033026802 53033027100 53033028300
53033011102 53033011101 53033026802 53033027000 53033027200 53033028402
53033011700 53033011102 53033027000 NA 53033027300 53033028403
53033011800 53033011700 NA NA 53033028000 53033028500
53033011900 53033011800 NA NA 53033028100 53033028700
NA 53033011900 NA NA 53033028200 53033028801
NA NA NA NA 53033028300 53033028802
NA NA NA NA 53033028402 53033029101
NA NA NA NA 53033028403 53033026100
NA NA NA NA 53033028500 53033026200
NA NA NA NA 53033028700 53033026300
NA NA NA NA 53033028801 53033026400
NA NA NA NA 53033028802 53033027100
NA NA NA NA 53033029100 53033027200
NA NA NA NA NA 53033027300
NA NA NA NA NA 53033028100
NA NA NA NA NA 53033028200
NA NA NA NA NA 53033028300
NA NA NA NA NA 53033028802

To create the community approximations, the tract boundaries of each community are merged and each of the census table estimates are aggregated. In addition to combining the estimates, this method also recalculates the standard error for each census table. It should be noted that this method is only valid for census tables representing count data.1

Community Maps


  1. This limitation is made explicit by the acs package creator, Ezra Haber Glenn, here.

LS0tCmRmX3ByaW50OiB0aWJibGUKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICBkZWZhdWx0CiAgcGRmX2RvY3VtZW50OgogICAga2VlcF90ZXg6IHllcwphbHdheXNfYWxsb3dfaHRtbDogeWVzCi0tLQoKYGBge3IgY2Vuc3VzLWFjcy1jb21tcy1zZXR1cCwgZWNobyA9IEZBTFNFLCB3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0UsY29tbWVudD1GQUxTRX0KbGlicmFyeShwbHlyKQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KHJwcm9qcm9vdCkKbGlicmFyeShyZ2RhbCkKbGlicmFyeShzcCkKbGlicmFyeShyZ2VvcykKbGlicmFyeSh0aWdyaXMpCmxpYnJhcnkobGVhZmxldCkKbGlicmFyeShnZ3RoZW1lcykKbGlicmFyeShtYWdyaXR0cikKbGlicmFyeShzdHJpbmdyKQpsaWJyYXJ5KGRvd25sb2FkZXIpCmxpYnJhcnkod2Vic2hvdCkKbGlicmFyeShodG1sdG9vbHMpCmxpYnJhcnkoZ3Bsb3RzKQpsaWJyYXJ5KGdnbWFwKQpsaWJyYXJ5KHNoaW55KQpsaWJyYXJ5KGh0bWx3aWRnZXRzKQpsaWJyYXJ5KHJlYWR4bCkKbGlicmFyeShhY3MpCmxpYnJhcnkoUkNvbG9yQnJld2VyKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShmb3JjYXRzKQpsaWJyYXJ5KG1pc2NnaXMpCmxpYnJhcnkob3BlcmF0b3IudG9vbHMpCmxpYnJhcnkobGVhZmxldC5leHRyYXMpCmxpYnJhcnkodmlyaWRpc0xpdGUpCmxpYnJhcnkoc2YpCnJvb3QgPC0gcnByb2pyb290Ojppc19yc3R1ZGlvX3Byb2plY3QKcm9vdF9maWxlIDwtIHJvb3QkbWFrZV9maXhfZmlsZSgpCm9wdHNfY2h1bmskc2V0KGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIGNvbW1lbnQ9RkFMU0UpCgpgYGAKCmBgYHtyIGNlbnN1cy1hY3MtY29tbXMtY29sb3JzfQpncmVlbiA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbWyJncmVlbiJdXQpibHVlIDwtIG1pc2NnaXM6Om1pc2NnaXNfcGFscyR0YWJsZWF1X2NhdFtbImJsdWUiXV0Kb3JhbmdlIDwtIG1pc2NnaXM6Om1pc2NnaXNfcGFscyR0YWJsZWF1X2NhdFtbIm9yYW5nZSJdXQpyZWQgPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W1sicmVkIl1dCnRlYWwgPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W1sidGVhbCJdXQpwYWxfcmdiXzQgPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W2MoInJlZCIsImdvbGQiLCJncmVlbiIsImJsdWUiKV0gJT4lIHVubGlzdCAlPiUgcGFsZXR0ZSgpCnBhbF9yZ2JfNCA8LSBtaXNjZ2lzOjptaXNjZ2lzX3BhbHMkdGFibGVhdV9jYXRbYygicmVkIiwiZ29sZCIsImdyZWVuIiwiYmx1ZSIpXSAlPiUgdW5saXN0ICU+JSBwYWxldHRlKCkKcGFsX3JnYl82IDwtIG1pc2NnaXM6Om1pc2NnaXNfcGFscyR0YWJsZWF1X2NhdFtjKCJyZWQiLCJnb2xkIiwiZ3JlZW4iLCJibHVlIiwib3JhbmdlIiwicHVycGxlIildICU+JSB1bmxpc3QgJT4lIHBhbGV0dGUoKQpwYWxfcmdiXzYgPC0gbWlzY2dpczo6bWlzY2dpc19wYWxzJHRhYmxlYXVfY2F0W2MoInJlZCIsImdvbGQiLCJncmVlbiIsImJsdWUiLCJvcmFuZ2UiLCJwdXJwbGUiKV0gJT4lIHVubGlzdCAlPiUgcGFsZXR0ZSgpCnByb2pfbGlnaHRfZ3JleSA8LSBjb2wyaGV4KCJncmV5NzUiKQpwcm9qX2dyZXkgPC0gY29sMmhleCgiZ3JleTUwIikKcHJval9kYXJrX2dyZXkgPC0gY29sMmhleCgiZ3JleTI1IikKCmBgYAoKCiMjIyBDT08gQ29tbXVuaXRpZXMgey19CgpUaGUgcHJpbWFyeSBnZW9ncmFwaGljIHVuaXQgb2YgdGhpcyBhc3Nlc3NtZW50IGlzIHRoZSBbY2Vuc3VzIHRyYWN0XShodHRwczovL3d3dy5jZW5zdXMuZ292L2dlby9yZWZlcmVuY2UvZ3RjL2d0Y19jdC5odG1sKS4gQXMgaXMgdGhlIGNhc2Ugd2l0aCBtYW55IGNvbW11bml0aWVzLCB0aGUgY2Vuc3VzIGdlb2dyYXBoaWVzIGRvIG5vdCBjb2luY2lkZSBleGFjdGx5IHdpdGggdGhlIGZvcm1hbCBnZW9ncmFwaGljIGJvdW5kYXJ5IG9mIHRoZSBzdHVkeSdzIHRocmVlIHNpdGVzLCBhbmQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgX3NwYXRpYWwgYXBwcm94aW1hdGlvbnNfIG9mIHRoZXNlIGNvbW11bml0aWVzLgoKTGlzdGVkIGJlbG93IGFyZSB0aGUgZ2VvZ3JhcGhpYyBpZGVudGlmaWVycyBvZiB0aGUgY2Vuc3VzIHRyYWN0cyB0aGF0IGFwcHJveGltYXRlIGVhY2ggc2l0ZS4KCmBgYHtyIGNlbnN1cy1hY3MtY29tbXMtZmlsZXMsIHJlc3VsdHM9ImFzaXMifQoKIyBDZW5zdXMgdHJhY3QgYm91bmRhcmllcyBmb3IgdGhlIDIwMTUgZGF0YQoKIyBSYWluaWVyIFZhbGxleQpydiA8LSBjKCI1MzAzMzAxMDAwMSIsICI1MzAzMzAxMDMwMCIsICI1MzAzMzAxMDQwMSIsICI1MzAzMzAxMTAwMSIsICI1MzAzMzAxMTAwMiIsICI1MzAzMzAxMTEwMSIsIjUzMDMzMDExMTAyIiwgIjUzMDMzMDExNzAwIiwgIjUzMDMzMDExODAwIiwgIjUzMDMzMDExOTAwIikKCiMgV2hpdGUgQ2VudGVyCndjIDwtIGMoIjUzMDMzMDI2NjAwIiwiNTMwMzMwMjY3MDAiLCI1MzAzMzAyNjUwMCIsIjUzMDMzMDI2ODAxIiwiNTMwMzMwMjY4MDIiLCI1MzAzMzAyNzAwMCIpCgojIFNlYVRhYy9UdWt3aWxhCgpzdGNfaHVzIDwtIHJlYWRfY3N2KHJvb3RfZmlsZSgnMS1kYXRhLzMtZXh0ZXJuYWwvbWFudWFsL3NlYXRhYy10ci9ERUNfMTBfU0YxX0gxL0RFQ18xMF9TRjFfSDFfd2l0aF9hbm4uY3N2JyksIAogICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoSWQyID0gY29sX2NoYXJhY3RlcigpKSwgc2tpcCA9IDEpCgp0dWtfaHVzIDwtIHJlYWRfY3N2KHJvb3RfZmlsZSgnMS1kYXRhLzMtZXh0ZXJuYWwvbWFudWFsL3R1a3dpbGEtdHIvREVDXzEwX1NGMV9IMS9ERUNfMTBfU0YxX0gxX3dpdGhfYW5uLmNzdicpLCAKICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKElkMiA9IGNvbF9jaGFyYWN0ZXIoKSksIAogICAgICAgICAgICAgICAgICAgIHNraXAgPSAxKQoKc3RjIDwtICBwYXN0ZShzdWJzdHIoeCA9IHN0Y19odXMkSWQyLDEsMiksc3Vic3RyKHggPSBzdGNfaHVzJElkMiw4LDE2KSxzZXAgPSAiIikKCnR1ayA8LSAgcGFzdGUoc3Vic3RyKHggPSB0dWtfaHVzJElkMiwxLDIpLHN1YnN0cih4ID0gdHVrX2h1cyRJZDIsOCwxNiksc2VwID0gIiIpCgpzdGN0dWsgPC0gYyhzdGMsdHVrKQoKIyBDZW5zdXMgdHJhY3QgYm91bmRhcmllcyBmb3IgdGhlIDIwMDkgZGF0YQoKaWYoIWV4aXN0cygnY3cnKSl7Y3cgPC0gcmVhZF9yZHMocm9vdF9maWxlKCcxLWRhdGEvNC1pbnRlcmltL2N3LTIwMDAtMjAxMC5yZHMnKSl9CgpnZXRfR0VPSUQyMDA5IDwtIGZ1bmN0aW9uKGdlb2lkc18yMDE1LCBjdyl7CiAgICAgICAgIyBicm93c2VyKCkKICAgICAgICBjdyAlPiUgCiAgICAgICAgICAgICAgICBmaWx0ZXIoR0VPSURfMjAxMCAlaW4lIGdlb2lkc18yMDE1KSAlPiUgCiAgICAgICAgICAgICAgICBmaWx0ZXIoV0VJR0hUID4gLjAxKSAlPiUKICAgICAgICAgICAgICAgIGV4dHJhY3QyKCdHRU9JRF8yMDAwJykgJT4lIHVuaXF1ZSgpCn0KCmlmKCFmaWxlLmV4aXN0cyhyb290X2ZpbGUoJzEtZGF0YS80LWludGVyaW0vY29vLWNvbW0tdHItZGYucmRzJykpKXsKICAgICAgICBsaXN0KAogICAgICAgICAgICAgICAgJ1JWXzIwMDknID0gZ2V0X0dFT0lEMjAwOShydixjdyksCiAgICAgICAgICAgICAgICAnUlZfMjAxNScgPSBydiwKICAgICAgICAgICAgICAgICdXQ18yMDA5JyA9IGdldF9HRU9JRDIwMDkod2MsY3cpLAogICAgICAgICAgICAgICAgJ1dDXzIwMTUnID0gd2MsCiAgICAgICAgICAgICAgICAnU1RLV18yMDA5JyA9IGdldF9HRU9JRDIwMDkoc3RjdHVrLGN3KSwKICAgICAgICAgICAgICAgICdTVEtXXzIwMTUnID0gc3RjdHVrCiAgICAgICAgKSAlPiUgCiAgICAgICAgICAgICAgICBtaXNjZ2lzOjpjYmluZF9maWxsKC4pICU+JQogICAgICAgICAgICAgICAgYXNfdGliYmxlKCkgJT4lCiAgICAgICAgICAgICAgICBzZXRfY29sbmFtZXMoCiAgICAgICAgICAgICAgICAgICAgICAgIGMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhaW5pZXIgVmFsbGV5PGJyPigyMDA5KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhaW5pZXIgVmFsbGV5PGJyPigyMDE1KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldoaXRlIENlbnRlcjxicj4oMjAwOSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaGl0ZSBDZW50ZXI8YnI+KDIwMTUpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2VhVGFjL1R1a3dpbGE8YnI+KDIwMDkpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2VhVGFjL1R1a3dpbGE8YnI+KDIwMTUpIgogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApICU+JSAKICAgICAgICAgICAgICAgIHdyaXRlX3Jkcyhyb290X2ZpbGUoJzEtZGF0YS80LWludGVyaW0vY29vLWNvbW0tdHItZGYucmRzJykpCn0KCnJlYWRfcmRzKHJvb3RfZmlsZSgnMS1kYXRhLzQtaW50ZXJpbS9jb28tY29tbS10ci1kZi5yZHMnKSkgJT4lIAogICAgICAgIGtuaXRyOjprYWJsZShjYXB0aW9uID0gIkNlbnN1cyBUcmFjdCBHRU9JRHMiKQoKYGBgCgpUbyBjcmVhdGUgdGhlIGNvbW11bml0eSBhcHByb3hpbWF0aW9ucywgdGhlIHRyYWN0IGJvdW5kYXJpZXMgb2YgZWFjaCBjb21tdW5pdHkgYXJlIG1lcmdlZCBhbmQgZWFjaCBvZiB0aGUgY2Vuc3VzIHRhYmxlIGVzdGltYXRlcyBhcmUgYWdncmVnYXRlZC4gSW4gYWRkaXRpb24gdG8gY29tYmluaW5nIHRoZSBlc3RpbWF0ZXMsIHRoaXMgbWV0aG9kIGFsc28gcmVjYWxjdWxhdGVzIHRoZSBzdGFuZGFyZCBlcnJvciBmb3IgZWFjaCBjZW5zdXMgdGFibGUuIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IHRoaXMgbWV0aG9kIGlzIG9ubHkgdmFsaWQgZm9yIGNlbnN1cyB0YWJsZXMgcmVwcmVzZW50aW5nIGNvdW50IGRhdGEuXltUaGlzIGxpbWl0YXRpb24gaXMgbWFkZSBleHBsaWNpdCBieSB0aGUgYGFjc2AgcGFja2FnZSBjcmVhdG9yLCBFenJhIEhhYmVyIEdsZW5uLCBbaGVyZV0oaHR0cDovL2VnbGVubi5zY3JpcHRzLm1pdC5lZHUvY2l0eXN0YXRlLykuXQoKYGBge3IgY2Vuc3VzLWFjcy1jb21tcy1jb21iaW5lZC1nZW9tc30KCmlmKCFleGlzdHMoJ2Fjc19ub3JtbF9zZicpKXthY3Nfbm9ybWxfc2YgPC0gcmVhZF9yZHMocm9vdF9maWxlKCcuLzEtZGF0YS80LWludGVyaW0vY29vLWFjcy1ub3JtbC1zZi5yZHMnKSl9CgojIE5ldyBjb2x1bW5zOiBgQ09NTVVOSVRZYCBhbmQgYENPTU1NVU5JVFlfRlVMTGAKCnJ2NiA8LSBtYXBfY2hyKHJ2LHN0cl9zdWIsNiwxMSkKCndjNiA8LSBtYXBfY2hyKHdjLHN0cl9zdWIsNiwxMSkKCnN0Y3R1azYgPC0gbWFwX2NocihzdGN0dWssc3RyX3N1Yiw2LDExKQoKY29vNiA8LSBjKHJ2Nix3YzYsc3RjdHVrNikKCiMgQWdncmVnYXRpb24gZnVuY3Rpb24KYWdncmVnYXRlX2NvbW1zIDwtIGZ1bmN0aW9uKGNvbCl7CiAgICAgICAgCiAgICAgICAgY2xhc3MgPC0gY29sICU+JSBjbGFzcygpICU+JSB1bmlxdWUgJT4lIGV4dHJhY3QyKDEpCiAgICAgICAgCiAgICAgICAgIyBDSEFSQUNURVIgQ09MVU1OUwogICAgICAgIGlmKGNsYXNzICVpbiUgJ2NoYXJhY3Rlcicpe05BX2NoYXJhY3Rlcl8KICAgICAgICB9ZWxzZSAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIyBMT0dJQ0FMIENPTFVNTlMgCiAgICAgICAgICAgICAgICBpZihjbGFzcyAlaW4lICdsb2dpY2FsJyl7IE5BCiAgICAgICAgICAgICAgICB9ZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIyBTRkMgQ09MVU1OUyAKICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2xhc3MgJWluJSAnc2ZjX01VTFRJUE9MWUdPTicpeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wgJT4lIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RfdW5pb24gJT4lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdF9jYXN0KCdNVUxUSVBPTFlHT04nKSAlPiUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdF9idWZmZXIoLjAwMDAwMSkgJT4lIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RfY2FzdCgnTVVMVElQT0xZR09OJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQUNTIENPTFVNTlMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjbGFzcyAlaW4lICdsaXN0JyAmIGV4dHJhY3QyKGNvbCwxKSAlPiUgY2xhc3MgJWluJSAnYWNzJyl7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sICU+JSByZWR1Y2Uoc3VwcHJlc3NXYXJuaW5ncyhyYmluZC5hY3MpKSAlPiUgYXBwbHkoMSxzdW0pICU+JSBsaXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQp9CgppZighZmlsZS5leGlzdHMocm9vdF9maWxlKCcuLzEtZGF0YS80LWludGVyaW0vYWNzX25vcm1sX2FsbF9nZW9tc19zZi5yZHMnKSkpewogICAgICAgIAogICAgICAgIGFjc19ub3JtbF9jb21tc19zZiA8LSAKICAgICAgICAgICAgICAgIGFjc19ub3JtbF9zZiAlPiUgCiAgICAgICAgICAgICAgICBtdXRhdGUoQ09NTVVOSVRZX0ZVTEwgPSBjYXNlX3doZW4oLiRHRU9JRDYgJWluJSBydjYgfiAnUmFpbmllciBWYWxsZXknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4kR0VPSUQ2ICVpbiUgd2M2IH4gJ1doaXRlIENlbnRlcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiRHRU9JRDYgJWluJSBzdGN0dWs2IH4gJ1NlYVRhYy9UdWt3aWxhJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gTkFfY2hhcmFjdGVyXyksCiAgICAgICAgICAgICAgICAgICAgICAgQ09NTVVOSVRZID0gY2FzZV93aGVuKC4kR0VPSUQ2ICVpbiUgcnY2IH4gJ1JWJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiRHRU9JRDYgJWluJSB3YzYgfiAnV0MnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuJEdFT0lENiAlaW4lIHN0Y3R1azYgfiAnU1RLVycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBOQV9jaGFyYWN0ZXJfKSkgJT4lIAogICAgICAgICAgICAgICAgc2VsZWN0KE5BTUUsTkFNRV9GVUxMLEdFT0lENixDT01NVU5JVFlfRlVMTCxDT01NVU5JVFksZXZlcnl0aGluZygpKSAlPiUgCiAgICAgICAgICAgICAgICB1bmdyb3VwICU+JSAKICAgICAgICAgICAgICAgIHN0X2FzX3NmKCkKICAgICAgICAKICAgICAgICBjb21tcyA8LQogICAgICAgICAgICAgICAgYWNzX25vcm1sX2NvbW1zX3NmICU+JSAKICAgICAgICAgICAgICAgIGZpbHRlcighaXMubmEoQ09NTVVOSVRZKSkgJT4lIAogICAgICAgICAgICAgICAgdW5jbGFzcyAlPiUgCiAgICAgICAgICAgICAgICBhc190aWJibGUgJT4lIAogICAgICAgICAgICAgICAgc2xpY2Vfcm93cygnQ09NTVVOSVRZJykgJT4lIAogICAgICAgICAgICAgICAgZG1hcChhZ2dyZWdhdGVfY29tbXMpICU+JSAKICAgICAgICAgICAgICAgIG11dGF0ZShnZW9tID0gc3Rfc2ZjKGdlb20pKSAlPiUgCiAgICAgICAgICAgICAgICBzdF9hc19zZigpCiAgICAgICAgCiAgICAgICAgYWxsX2NvbyA8LSAKICAgICAgICAgICAgICAgIGFjc19ub3JtbF9jb21tc19zZiAlPiUgCiAgICAgICAgICAgICAgICBmaWx0ZXIoIWlzLm5hKENPTU1VTklUWSkpICU+JSAKICAgICAgICAgICAgICAgIHVuY2xhc3MgJT4lIAogICAgICAgICAgICAgICAgYXNfdGliYmxlICU+JSAKICAgICAgICAgICAgICAgIGRtYXAoYWdncmVnYXRlX2NvbW1zKSAlPiUgCiAgICAgICAgICAgICAgICBtdXRhdGUoZ2VvbSA9IHN0X3NmYyhnZW9tKSkgJT4lIAogICAgICAgICAgICAgICAgc3RfYXNfc2YoKQogICAgICAgIAogICAgICAgIGFjc19ub3JtbF9hbGxfZ2VvbXNfc2YgPC0gCiAgICAgICAgICAgICAgICBsaXN0KGFjc19ub3JtbF9jb21tc19zZiwgY29tbXMsIGFsbF9jb28pICU+JSAKICAgICAgICAgICAgICAgIHJlZHVjZShyYmluZC5zZikgJT4lIAogICAgICAgICAgICAgICAgbXV0YXRlKEdFT0dSQVBIWSA9IGNhc2Vfd2hlbihpcy5uYSguJE5BTUUpICYgIWlzLm5hKC4kQ09NTVVOSVRZKSB+ICdjb21tdW5pdHknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcy5uYSguJE5BTUUpICYgaXMubmEoLiRDT01NVU5JVFkpIH4gJ2NvbW11bml0aWVzIChtdWx0aXBsZSknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuJE5BTUUgJWluJSAnU0VBQ0NEJyB+ICdjb3VudHkgc3ViZGl2aXNpb24nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuJE5BTUUgJWluJSAnS0MnIH4gJ2NvdW50eScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiAndHJhY3QnKSkgJT4lIAogICAgICAgICAgICAgICAgbXV0YXRlKE5BTUUgPSBjYXNlX3doZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIGlzLm5hKC4kTkFNRSkgJiAuJEdFT0dSQVBIWSAlaW4lICdjb21tdW5pdGllcyAobXVsdGlwbGUpJyB+ICdDT08nLAogICAgICAgICAgICAgICAgICAgICAgICBpcy5uYSguJE5BTUUpICYgLiRDT01NVU5JVFkgJWluJSAnUlYnIH4gLiRDT01NVU5JVFksCiAgICAgICAgICAgICAgICAgICAgICAgIGlzLm5hKC4kTkFNRSkgJiAuJENPTU1VTklUWSAlaW4lICdXQycgfiAuJENPTU1VTklUWSwKICAgICAgICAgICAgICAgICAgICAgICAgaXMubmEoLiROQU1FKSAmIC4kQ09NTVVOSVRZICVpbiUgJ1NUS1cnIH4gLiRDT01NVU5JVFksCiAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiAuJE5BTUUpKSAlPiUgCiAgICAgICAgICAgICAgICBtdXRhdGUoTkFNRV9GVUxMID0gY2FzZV93aGVuKAogICAgICAgICAgICAgICAgICAgICAgICAuJE5BTUUgJWluJSAnQ09PJyB+ICdDb21tdW5pdGllcyBvZiBPcHBvcnR1bml0eScsCiAgICAgICAgICAgICAgICAgICAgICAgIC4kTkFNRSAlaW4lICdSVicgfiAnUmFpbmllciBWYWxsZXknLAogICAgICAgICAgICAgICAgICAgICAgICAuJE5BTUUgJWluJSAnV0MnIH4gJ1doaXRlIENlbnRlcicsCiAgICAgICAgICAgICAgICAgICAgICAgIC4kTkFNRSAlaW4lICdTVEtXJyB+ICdTZWFUYWMvVHVrd2lsYScsCiAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiAuJE5BTUVfRlVMTCkpICU+JSAKICAgICAgICAgICAgICAgIG11dGF0ZShHRU9HX0ZDVCA9IGZhY3RvcihHRU9HUkFQSFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygndHJhY3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbW11bml0eScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tbXVuaXRpZXMgKG11bHRpcGxlKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY291bnR5IHN1YmRpdmlzaW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3VudHknKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkID0gVFJVRSkpICU+JSAKICAgICAgICAgICAgICAgIHNlbGVjdChOQU1FOlNFQUNDRF9MR0wsR0VPR1JBUEhZLEdFT0dfRkNULGdlb20sbWF0Y2hlcygnMjAxNScpLG1hdGNoZXMoJzIwMDknKSkgCiAgICAgICAgCiAgICAgICAgYWNzX25vcm1sX2FsbF9nZW9tc19zZiAlPiUgCiAgICAgICAgICAgICAgICB3cml0ZV9yZHMocm9vdF9maWxlKCcuLzEtZGF0YS80LWludGVyaW0vYWNzX25vcm1sX2FsbF9nZW9tc19zZi5yZHMnKSkKICAgICAgICAKfWVsc2V7CiAgICAgICAgYWNzX25vcm1sX2FsbF9nZW9tc19zZiA8LSByZWFkX3Jkcyhyb290X2ZpbGUoJy4vMS1kYXRhLzQtaW50ZXJpbS9hY3Nfbm9ybWxfYWxsX2dlb21zX3NmLnJkcycpKQp9CgphY3Nfbm9ybWxfYWxsX2dlb21zX3NmICU+JSAKICAgICAgICBhcnJhbmdlKGZjdF9yZXYoR0VPR19GQ1QpKSAlPiUgCiAgICAgICAgc2VsZWN0KE5BTUU6R0VPR19GQ1QsZ2VvbSxtYXRjaGVzKCcyMDE1JyksbWF0Y2hlcygnMjAwOScpKSAlPiUgCiAgICAgICAgdW5jbGFzcyAlPiUgCiAgICAgICAgYXNfdGliYmxlKCkKCmBgYAoKIyMjIyBDb21tdW5pdHkgTWFwcwpgYGB7ciBjZW5zdXMtYWNzLWNvbW1zLW1hcCwgZmlnLmhlaWdodD0xLjI1LCBmaWcud2lkdGg9MSwgIGZpZy5zaG93PSdob2xkJywgZHBpPTE1MH0KCiMgUHJpbnQgQ29tbXVuaXR5IE1hcHMKCnNob3dfY29tbV9tYXAgPC0gZnVuY3Rpb24obm0sIGNvbG9yLCBmbG9hdF9kaXIpewogICAgICAgIAogICAgICAgICMgTWFwIENlbnRlcgogICAgICAgIAogICAgICAgIHN0X2NlbnRyb2lkX3F0IDwtIHF1aWV0bHkoc3RfY2VudHJvaWQpCiAgICAgICAgCiAgICAgICAgY250ciA8LSBhY3Nfbm9ybWxfYWxsX2dlb21zX3NmICU+JSAKICAgICAgICAgICAgICAgIGZpbHRlcihHRU9HUkFQSFkgJWluJSAnY29tbXVuaXRpZXMgKG11bHRpcGxlKScpICU+JSAKICAgICAgICAgICAgICAgIHN0X2Jib3goKQogICAgICAgIGhhbGZ3YXkgPC0gZnVuY3Rpb24obWF4LG1pbil7KG1heC1taW4pLzIgKyBtaW59CiAgICAgICAgCiAgICAgICAgbG5nIDwtIGNudHJbWyd4bWluJ11dCiAgICAgICAgbGF0IDwtIGhhbGZ3YXkoY250cltbJ3ltYXgnXV0sY250cltbJ3ltaW4nXV0pCiAgICAgICAgCiAgICAgICAgY29tbV9zcCA8LSAKICAgICAgICAgICAgICAgIGFjc19ub3JtbF9hbGxfZ2VvbXNfc2YgJT4lIAogICAgICAgICAgICAgICAgc2VsZWN0KGV2ZXJ5dGhpbmcoKSwtbWF0Y2hlcygnMjAxNXwyMDA5JykpICU+JSAKICAgICAgICAgICAgICAgIGZpbHRlcihHRU9HUkFQSFkgJWluJSAndHJhY3QnICYgQ09NTVVOSVRZICVpbiUgbm0pICU+JSAKICAgICAgICAgICAgICAgIGFzKCJTcGF0aWFsIikKICAgICAgICAKICAgICAgICBjb21tX2NudF9zcCA8LSAKICAgICAgICAgICAgICAgIGFjc19ub3JtbF9hbGxfZ2VvbXNfc2YgJT4lIAogICAgICAgICAgICAgICAgc2VsZWN0KGV2ZXJ5dGhpbmcoKSwtbWF0Y2hlcygnMjAxNXwyMDA5JykpICU+JSAKICAgICAgICAgICAgICAgIGZpbHRlcihHRU9HUkFQSFkgJWluJSAnY29tbXVuaXR5JyAmIENPTU1VTklUWSAlaW4lIG5tKSAgJT4lIAogICAgICAgICAgICAgICAgbXV0YXRlKGdlb20gPSBzdF9jZW50cm9pZChnZW9tKSkgJT4lCiAgICAgICAgICAgICAgICBhcygiU3BhdGlhbCIpCiAgICAgICAgCiAgICAgICAgY29tbV9ib3VuZHNfc3AgPC0gCiAgICAgICAgICAgICAgICBhY3Nfbm9ybWxfYWxsX2dlb21zX3NmICU+JSAKICAgICAgICAgICAgICAgIHNlbGVjdChldmVyeXRoaW5nKCksLW1hdGNoZXMoJzIwMTV8MjAwOScpKSAlPiUgCiAgICAgICAgICAgICAgICBmaWx0ZXIoR0VPR1JBUEhZICVpbiUgJ2NvbW11bml0eScgJiBDT01NVU5JVFkgJWluJSBubSkgICU+JQogICAgICAgICAgICAgICAgYXMoIlNwYXRpYWwiKSAlPiUgCiAgICAgICAgICAgICAgICBhcygiU3BhdGlhbExpbmVzIikKICAgICAgICAKICAgICAgICBjb21tX3NwICU+JSAKICAgICAgICAgICAgICAgIG1pc2NnaXM6Om15TGZsdEdyZXkoKSAlPiUKICAgICAgICAgICAgICAgIG15TGZsdE9wdHModGlsZUxhYmVscyA9IEZBTFNFLCBmdWxsU2NyZWVuQnRuID0gRkFMU0UsIGJ1bXBUaWxlTGFiZWxzID0gRkFMU0UpICU+JSAKICAgICAgICAgICAgICAgIGFkZFBvbHlnb25zKHNtb290aEZhY3RvciA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGNvbDJoZXgoIndoaXRlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHQgPSAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHkgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yID0gY29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eSA9IC42NQogICAgICAgICAgICAgICAgKSAlPiUgCiAgICAgICAgICAgICAgICBhZGRQb2x5bGluZXMoZGF0YSA9IGNvbW1fYm91bmRzX3NwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5ID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IHByb2pfZGFya19ncmV5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHkgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodCA9IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21vb3RoRmFjdG9yID0gMCkgJT4lCiAgICAgICAgICAgICAgICBhZGRBd2Vzb21lTWFya2VycyhkYXRhID0gY29tbV9jbnRfc3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gbWFya2VyT3B0aW9ucyhvcGFjaXR5ID0gMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IH4gTkFNRV9GVUxMLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsT3B0aW9ucyA9IGxhYmVsT3B0aW9ucyhub0hpZGUgPSBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IGMoMCwwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSAnYXV0bycsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRPbmx5ID0gVFJVRSkpICU+JSAKICAgICAgICAgICAgICAgIHNldFZpZXcobG5nLGxhdCx6b29tID0gOSkgJT4lIAogICAgICAgICAgICAgICAgbWlzY2dpczo6c3R5bGVXaWRnZXQoc3R5bGUgPSBwYXN0ZTAoImZsb2F0OiIsZmxvYXRfZGlyLCI7bWFyZ2luOjFweCIpKSAlPiUgCiAgICAgICAgICAgICAgICBwcmludCgpCn0KCm5hbWVzIDwtIGMoJ1JWJywnV0MnLCdTVEtXJykKCmNvbG9ycyA8LSBjKGJsdWUsIGdyZWVuLCByZWQpCgpmbG9hdF9kaXJzIDwtIGMoJ2xlZnQnLCdsZWZ0Jywnbm9uZScpCgpwd2FsayhsaXN0KG5hbWVzLCBjb2xvcnMsIGZsb2F0X2RpcnMpLHNob3dfY29tbV9tYXApCgoKYGBgCg==